package cn.cyh.queue_service.websocket;

import cn.cyh.queue_service.common.Constants;
import cn.hutool.core.date.DateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 队列状态消息类
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueueStatusMessage implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 消息类型
     */
    private String type = Constants.WebSocketMessageType.STATUS_UPDATE;

    /**
     * 业务类型ID
     */
    private Long businessTypeId;

    /**
     * 业务类型名称
     */
    private String businessTypeName;

    /**
     * 排队号码
     */
    private String queueNumber;

    /**
     * 当前状态
     */
    private Integer status;

    /**
     * 前面等待人数
     */
    private Integer waitingCount;

    /**
     * 预计等待时间（分钟）
     */
    private Integer estimatedWaitingTime;

    /**
     * 当前叫号窗口
     */
    private String currentWindowNumber;

    /**
     * 叫号时间
     */
    private DateTime callTime;

    /**
     * 更新时间
     */
    private DateTime updateTime = new DateTime();

    /**
     * 当前处理的队列号码列表
     */
    private List<String> processingQueueNumbers;

    /**
     * 最近叫号的队列号码列表
     */
    private List<String> recentCalledQueueNumbers;

    /**
     * 消息内容
     */
    private String message;

    /**
     * 额外数据
     */
    private Object extra;
} 